<?php
class KM_Contacto extends Datos
{
	public $km_contacto_id;
	public $referencia;
	public $email;
	public $nombre;
	public $apellidos;
	public $telefono;
	public $departamento;
	public $mensaje;
	public $fecha;

	const TABLA             = "km_contactos";
	const CLAVE_PRIMARIA    = "km_contacto_id";

	public function consolida()
	{
		$retorno = Datos::NO_PERSISTIDO;

		if ($this->persistido())
		{
			$retorno = $this->consolidaExistente();
		} else {
			$retorno = $this->consolidaNuevo();
			$this->setPropiedad($this->getClavePrimaria(), $retorno);

			$referencia = KM_Contacto_Constantes::PREFIJO_REFERENCIA;
			$referencia.= KM_Contacto_Constantes::SEPARADOR_REFERENCIA;
			$referencia.= $retorno;
			 
			$this->setPropiedad("referencia", $referencia);
			$this->consolida();
		}

		return $retorno;
	}

	public function registraTipos()
	{
		$valores = array();
		$valores[KM_Contacto_Constantes::DEPARTAMENTO_ATENCION] = KM_Contacto_Constantes::DEPARTAMENTO_ATENCION;
		$valores[KM_Contacto_Constantes::DEPARTAMENTO_SISTEMAS] = KM_Contacto_Constantes::DEPARTAMENTO_SISTEMAS;
		$valores[KM_Contacto_Constantes::DEPARTAMENTO_CONTABLE] = KM_Contacto_Constantes::DEPARTAMENTO_CONTABLE;

		$this->setTipo("email",         new TipoDatoEMail());
		$this->setTipo("referencia",    new TipoDatoLiteral(10));
		$this->setTipo("nombre",        new TipoDatoLiteral(100));
		$this->setTipo("apellidos",     new TipoDatoLiteral(100));
		$this->setTipo("telefono",      new TipoDatoLiteral(50));
		$this->setTipo("departamento",  new TipoDatoSeleccion($valores));
		$this->setTipo("mensaje",       new TipoDatoTexto());
		$this->setTipo("fecha",         new TipoDatoAhora());
	}

	public function registraEsenciales()
	{
		$this->setEsencial("referencia");
		$this->setEsencial("email");
		$this->setEsencial("nombre");
		$this->setEsencial("mensaje");
		$this->setEsencial("departamento");
		$this->setEsencial("fecha");
	}

	public function registraUnicos()
	{
		$this->setUnico("referencia");
	}

	public function registraMetas()
	{
		$this->setInfo("email",        "EMail",        "Direccion de correo de contacto");
		$this->setInfo("nombre",       "Nombre",       "Nombre");
		$this->setInfo("apellidos",    "Apellidos",    "Apellidos");
		$this->setInfo("telefono",     "Telefono",     "Telefono de contacto");
		$this->setInfo("departmanto",  "Departmanto",  "Departamento al cual va dirigida la peticion de contacto");
		$this->setInfo("mensaje",      "Mensaje",      "Mensaje");
		$this->setInfo("fecha",        "Fecha",        "Fecha de registro");
	}

	public function getTabla()
	{
		return self::TABLA;
	}

	public function getClavePrimaria()
	{
		return self::CLAVE_PRIMARIA;
	}
}
?>